package com.crm.domain;

import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.crm.common.annotation.Excel;
import com.crm.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Clue extends BaseEntity {
    // 线索ID，唯一标识
    private Long id;
    // 线索联系人姓名
    private String name;
    // 联系电话，用于联系潜在客户
    private String phone;
    // 渠道，记录线索来源渠道
    private String channel;
    // 活动ID，关联的市场活动标识
    private Long activityId;
    // 活动名称，线索参与的市场活动名称
    @TableField(exist = false)
    private String activityName;
    // 活动信息，详细描述市场活动内容
    @TableField(exist = false)
    private String activityInfo;
    // 性别，联系人的性别信息
    private Integer sex;
    // 年龄，联系人的年龄
    private Integer age;
    // 微信，联系人的微信联系方式
    private String weixin;
    // QQ，联系人的QQ联系方式
    private String qq;
    // 等级，线索的重要性等级
    private String level;
    // 科目，涉及的业务或产品类别
    private String subject;
    // 状态，记录线索当前的状态 1-待跟进 2-跟进中 3-线索池
    private String status;
    // 分配者，记录最后一次分配线索的人
    @TableField(exist = false)
    private String assignBy;
    // 分配时间，记录线索被分配的时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(exist = false)
    private Date assignTime;
    // 所有者，记录线索的负责人

    private String owner;
    // 所有者时间，记录线索被指派给负责人的日期和时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    private Date ownerTime;
    // 错误计数，记录该线索在处理过程中出现错误的次数
    private Integer falseCount;
    // 下次跟进时间，预计下次联系的时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date nextTime;
    // 结束时间，线索处理结束的时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;
    // 用户ID，记录与线索相关的用户标识
    @TableField(exist = false)
    private Integer userId;
    // 转交记录，记录线索转交的相关信息
    private String transfer;


    public enum StatusType{


        UNFOLLOWED("待跟进","1"),
        FOLLOWING("跟进中","2"),
        RECOVERY("回收","3"),
        FALSE("伪线索/踢回公海","4"),
        DELETED("删除","5"),
        TOBUSINESS("转换商机","6"),
        TOCUSTOMER("转换客户","7");

        private String name;
        private String value;

        private StatusType(String name,String value)
        {
            this.name = name;
            this.value = value;
        }

        public String getName() {
            return name;
        }

        public String getValue() {
            return value;
        }
    }

    public enum ImportDictType
    {

        CHANNEL("渠道来源","clues_item"),

        SUBJECT("意向学科","course_subject"),

        LEVEL("意向学科","clues_level"),

        SEX("性别","sys_user_sex");


        private String name;
        private String dictType;

        private ImportDictType(String name, String dictType)
        {
            this.name = name;
            this.dictType = dictType;
        }

        public String getName() {
            return name;
        }

        public String getDictType() {
            return dictType;
        }
    }

}
